This article was written by FileMaker,
Inc, to help users of FileMaker
Server optimize the software for the platform it is being used on. This
is an excellent article that addresses all aspects of using Server in
your office.
Best
Practices for FileMaker Server Performance
This white paper from FileMaker offers tips on managing FileMaker
Server and how to tune it for different platforms to optimize
performance.
By Tony Miller, Senior Systems Engineer, FileMaker
FileMaker Server is,
essentially, the cornerstone of the FileMaker Pro family. It's
responsible for providing FileMaker Pro databases to FileMaker clients,
whether they're FileMaker Pro or FileMaker Pro Unlimited. Time and time
again, customers testify that the addition of FileMaker Server changed
their experience entirely, allowing for many simultaneous database
users (up to 250), routine automated backups of live data, and an
extreme enhancement in data reliability and performance. However, far
too many times, customers who've purchased FileMaker Server end up not
using it to its full potential, or they install and use it incorrectly.
This document is
designed to promote a greater understanding of FileMaker Server and
help database administrators provide the best possible service to their
customers: the database users. The information provided comes from
internal FileMaker employees, FileMaker system engineers working in the
field, and FileMaker Solutions Alliance partners. The advice is
therefore a healthy mix of both internal knowledge and real-world
expertise. This document does not, however, cover in entirety the best
practices for the operating system, system backups, and enterprise
networking.
Database
administrators, IT/IS professionals, and users want their database
systems to operate robustly and safely. Users rely on the data in
database files for a wide variety of management purposes, irrespective
of the size of the enterprise. Correct, optimal configuration of
FileMaker Server is an integral part of providing that type of
reliability. And while it's beyond the scope of this paper, proper
architectural design of the multi-user files holding the data is the
other integral part. Without both proper design and proper
configuration and deployment, a safe, robust, reliable system won't
exist.
Because FileMaker Pro is such an easy-to-use application
and, more times than not, the database administrator has grown to that
position without a strong IT background, the FileMaker Server tends to
be treated as a load-and-go solution. The opposite extreme is that the
database administrator has a strong IT background and knows little
about FileMaker Pro, yet he's been tasked with setting it up; this can
result in the server being treated like an enterprise server. FileMaker
Pro is easy and it can serve the enterprise, but performance,
reliability, and cost are at stake when it's configured improperly.
I'll examine these extremes separately.
The workgroup administrator
When a FileMaker Pro database has grown in a workgroup
to the point that the organization needs FileMaker Server, the person
who developed that database usually becomes the database server
administrator. Often, the hardware allotted for this job is inadequate,
the operating system is unstable or inappropriate, and the backup
routine is abysmal. If you are this person, take heart! You learned to
use FileMaker Pro to create the database that's being used to help your
organization work more efficiently. Learning to use FileMaker Server
will likely be far easier than creating that database. Perhaps the most
difficult part of the job will be to secure the appropriate server
hardware and operating system to get the job done right. Convince the
appropriate people that the data is priceless, and the cost of securing
that data should seem negligible.
The trained professional administrator
Fortunately, those who are storing valuable data have
come forward for your help. It should also be a comfort to know that
they've been using a tool to capture data that will save on IT costs,
since FileMaker Server tends to be a "near lights out" solution.
Setting up a FileMaker Server may be the easiest server installation
you'll have to do in your career. Just one word of caution: Don't treat
FileMaker Server quite like an average server. Though there are some
similarities and you'll want to provide adequate hardware, a $20,000
quad-processor with 1GB of RAM like you may be accustomed to for
servers is a waste of money for FileMaker Server.
Hardware
As everyone knows, there's a difference between the
stated minimums and the desirable minimums. FileMaker Server's minimum
system requirements are as follows:
Windows:
- Pentium 133MHz
- 64MB RAM for NT
- 128MB RAM for 2000
- Windows NT 4.0 (SP4) or Windows 2000
Mac OS X:
- Apple G3 (excluding G3 upgrade cards)
- 256 RAM (previously recommended only 128MB RAM)
- Mac OS X
Mac OS:
- Power Macintosh
- 256 RAM (previously recommended only 32MB RAM)
- Mac OS 8.6 to 9.1
Linux:
- Pentium 133MHz
- 64MB RAM
- RedHat Linux 6.2 or 7.0
I'll begin by defining
what hardware is desirable for FileMaker Server. First, FileMaker
Server is a database server and, as such, is I/O-intensive. Its job is
to move data between the hard drive subsystem and the network subsystem
for consumption by the FileMaker Pro clients. These are the two most
important parts of the hardware system, followed by processor and
memory.
If you're going to trust
your company's valuable data to a database server, treat that server as
you would any other mission-critical device. Buy hardware that's
certified for use with the chosen operating system. This is easier with
Mac OS than it is with Windows or Red Hat Linux, but all machines have
strong documentation available describing what is and is not supported.
Anyone who's tried to track down intermittent failures on a machine set
up with a US$20 video card with no-name drivers understands the value
of this. Get a name-brand machine intended to be a server, with
redundant power supplies, UPS systems, sufficient cooling, and rack
mounting (if useful in your organization). Often, it's important to use
a system that server administrators are comfortable with. This is to
your advantage when it comes to configuring the hardware and the
operating system. As FileMaker Server works on four popular operating
systems, this should not be a difficult task.
Storage
A SCSI UltraWide hard
drive is highly recommended; a hardware-based SCSI RAID system is
even more desirable. If this is absolutely out of the budget range, get
the fastest hard drive/controller combination possible. The reason for
using SCSI or RAID over ATA/IDE systems is that the SCSI architecture
is far more scalable. ATA/IDE only allows for two drives to be
connected to a channel, and there are commonly only two channels
available, making a total of four drives. One of these is generally a
CD-ROM. The asynchronous I/O of SCSI is far superior to IDE because
each device has intelligence to allow multiple devices to be "working"
simultaneously, returning data to the controller in the most efficient
manner. In addition to this, SCSI is generally used for server
hardware, and as such is built with higher reliability, wider operating
temperature ranges, etc. For more information on the benefits of SCSI
over ATA/IDE, search the Internet. Of course, any other hard drive
connection, such as USB- or FireWire-based drives, are out of the
question. Too much is at stake for a cable to become unplugged and all
data to become unavailable.
To further speed the
connection, you can add a cache controller if many large files are
being used. This piece of hardware will act as a cache to the disks,
working much more quickly than physically accessing the disks.
Configure the hard drive
subsystem to work as efficiently as possible. For example, if you have
two hard drives and two controllers, install each drive on separate
controllers rather than both on one. If you have a RAID array and a
hardware RAID controller, build one container and partition it (rather
than building two containers) so that the controller only has to deal
with one set of parity.
Network
Get a good network adapter
-- a reliable name brand made for such purposes. With the flood of home
networking and cheap adapters on the market, don't think that all are
created equal. The cheap network cards tend to use the computer's CPU
to perform its instructions rather than having on-board processor.
Similar to the hard drive, make sure the network card is of server
quality. This is often a difficult task, so research the possibilities,
keeping in mind what operating system you'll be using and checking the
compatibility.
Consider more than just
the network card in this part. Buying the best card on the market may
be a colossal waste if it doesn't match the network into which you'll
be plugging it. So, buy the fastest network card your network will
support and the appropriate network cabling to support that -- e.g.,
CAT5 cable for 100T and CAT5e (occasionally referred to as CAT6) cable
for 1000T. It's been reported that, when the speed and duplex
settings of the network card are set to Auto, performance is greatly
reduced. Be aware of this and configure the network card and the
switch appropriately. Though I won't give details here, advanced
systems administrators could implement an EtherChannel to provide
throughput greater than a single Ethernet connection could offer.
Another consideration is
to have multiple networks set up on the server. Dedicating a network
connection to FileMaker Server lets you use the other network
connection for things like backup of offline files.
Processor
Toward the end of the list
of hardware priorities is the processor. Much of this decision depends
on the operating system used and its requirements. Be sure you treat
this as a server machine, though. A true Intel Pentium processor is
preferred over the Celeron processor, as is an AMD Athlon over a Duron.
Again, check the documentation for the chosen operating system for
recommendations. The speed will vary -- speed records are broken all
the time. However, as with most computer purchases, buy the fastest
processor the budget will allow, but remember that FileMaker Server is
not extremely processor-intensive, so be careful of overkill.
Although FileMaker Server
gains some benefit in a multi-processor situation due to the operating
system's intervention, it is not written to make specific use of
multiple processors. Therefore, the
added expense of a second processor
provides little value. The money would be better spent in
getting
better storage or networking.
Memory
Bringing up the rear of
the list is memory. FileMaker Server will tend to take less than
30MB and has a maximum cache size of 40MB. Therefore, on current
operating systems (Mac OS 8.6 to 9.2 and Mac OS X, Windows NT and 2000,
and Red Hat Linux 7.0) 256MB of RAM is sufficient. With memory as
inexpensive as it is now, though, increasing this to 512MB could be
beneficial for the operating system's operations.
Operating system
FileMaker Pro is well
known as the cross-platform relational database. FileMaker Server is no
different. FileMaker Server runs on Macintosh Classic, Mac OS X,
Windows NT Server, Windows 2000 Server, and now Red Hat Linux 6.2 and
7.0. Though this is a great benefit, it does make it difficult to
document the best practices for the server thoroughly. Each platform
has its own set of issues and strengths. Determine which operating
system is best for you in your situation. Which operating system the
clients are using doesn't matter to the server because all versions
communicate with each other.
Macintosh operating
systems are known for their ease of use. Since FileMaker Pro got its
start in the Macintosh world, many people assume Mac will make the best
server platform. However, FileMaker sells the majority of its software
to the Windows platform. The Mac OS tends to have a few more
intricacies involved with making FileMaker Server run efficiently. Mac
OS X promises to make this much easier due to its core design as a true
network operating system. One advantage of OS X over the Mac OS 8.x
and 9.x platforms is that FileMaker Server runs as a service (or
"daemon") and not as an application. This means the OS X FileMaker
Server doesn't have to be open and "in the foreground" like its Mac OS
8.x and 9.x sibling. Additionally, the FileMaker Server daemon can run
even when there are no users logged into the system, potentially
enhancing security at the server.
Beware of the cost saving
bug when shopping for the operating system. Avoid operating systems not
designed to be a server, such as Windows NT Workstation or Windows 2000
Professional. Though FileMaker Server will install on these versions,
they were designed to focus on user applications, not on background
services. What this means ultimately is that the operating system is
not tuned for your purposes. Use Windows NT Server or Windows 2000
Server to get the job done right. If you really want to save money
on the operating system, go for the Linux server, but be sure someone
is available who can administer it.
Whatever your choice in
operating systems, bear in mind that an operating system is a piece of
software that's constantly being improved. Check the relevant Web sites
for information pertaining to your operating system and install the
appropriate updates. Always check the FileMaker Web site [http://www.filemaker.com] and Tech Info database to
ensure compatibility with the updates. For example, a common update to
Windows NT and 2000 users is Internet Explorer 5.5. However, this
version of IE is incompatible with FileMaker Server 5.0 management
console. This is a documented issue, but there are often customers
calling technical support to find out why they can't manage their
database server anymore. Keep hardware drivers as well as the FileMaker
Server software up to date. Mark the calendar to check the FileMaker
Web site for upgrades that could save hours in troubleshooting and data
recovery down the road.
Tuning
Proper tuning of FileMaker
Server seems to be an elusive task. Either it's set up to do far more
than it needs to, increasing overhead to a detriment, or it's installed
as a substandard application and treated as if it isn't important
enough for a dedicated computer. First and foremost, devote a
computer exclusively to the task of being the FileMaker Server. Don't
attempt to make this machine be the file server, Web server, e-mail
server, domain controller, DNS server, or anything else. The
FileMaker Server documentation clearly states that this is the ideal
situation. Dedicating a machine isn't just a good idea -- it's
imperative if you want FileMaker to work reliably with great
performance. Many smaller businesses successfully use the FileMaker
Server as the file server, domain server, etc., but this article
defines best practices, not possibilities. This practice is detrimental
to FileMaker's performance and can lead to reduced reliability.
Consider these best
practices:
- Build the machine from the ground up
yourself. Don't trust your valuable data to
an operating system loaded by the hardware provider. These
installations are notoriously problematic. Doing a custom installation
of the server OS provides a system loaded with the bare minimum without
the difficulty of removing items.
- Partition the drives to provide maximum
reliability. Separate the operating system
from the FileMaker data if at all possible. Installing the operating
system using a RAID 0 configuration separated from the FileMaker data
placed in a RAID 5 configuration is an optimal balance of speed and
reliability. Also, on a Linux installation, putting the /var/log path
in its own partition is desirable. This way, if there are any logs
growing out of control, they will only fill that partition, leaving the
operating system and FileMaker data files unharmed.
- Turn off file sharing and other unused
services. File sharing is the ability to
access files on a remote network device. What FileMaker Server does
isn't file sharing; it's data sharing. File sharing uses a good deal of
I/O resources, the same resources on which FileMaker Server relies.
Therefore, any type of file sharing will reduce performance of the
FileMaker Server. Making the database files available via file sharing
is not only a performance issue but also a security issue. If there's a
way for someone to get access to the physical FileMaker files, then
there's the possibility for a security breach. One of the easiest ways
to lessen this threat is to be sure users can only access the data by
opening the database and navigating the "Open Remote Database" or
"Hosts" dialog.
- Keep the FileMaker database files local on
the server. Although it may seem natural to
place FileMaker data files on network directories, this is a bad idea.
The most important factor for FileMaker's performance will be a fast
and clean I/O to the disk files. Thus, reading data and writing updates
to a local disk is imperative. If the FileMaker files are on a network
drive, then any data updates first have to climb down the OSI model
network layers, across a network full of competing packets, and back up
the OSI ladder at the target volume, and then finally be committed
through the drive sub-system there to the files. Even on the best
network, this process is orders of magnitude slower than a simple local
write and adds quite a few variables, potentially affecting stability
as well as speed. Additionally, the target drive is, by definition, a
shared volume. Therefore, all of the issues mentioned previously
regarding security and stability in file sharing would apply.
- Turn off unused network protocols. FileMaker Server can communicate over TCP/IP, IPX/SPX, and
AppleTalk. The Red Hat Linux version and the Mac OS X version only use
TCP/IP. Use only TCP/IP networking; additionally it's the only protocol
available in a cross-platform network for FileMaker Server 5.5. The
bottom line is that the server will have to devote less overhead if
it's only using one protocol rather than two or three, so reduce the
overhead by specifying the protocols it will use.
- Reduce the number of guests. Determine how many concurrent guests will be connecting to
your FileMaker Server, add 10 percent for good measure, and set it at
that. Although you could host to up to 250 users, each user takes up
worker threads on the computer, increasing overhead. Reducing the
overhead significantly improves performance.
- Reduce the number of files. Worker threads are also maintained for each possible file.
So, reducing the number of files to the number actually being hosted
and leaving 10 percent for growth will use less overhead. Changing
either of these numbers later isn't a difficult task, but it does
require that the FileMaker Server service/daemon/application be
restarted.
- Reduce the computer's extraneous work. Often people will set up a server beautifully -- all the
right settings, low overhead, etc. -- but leave the machine running a
processor-intensive screen saver or virus scanner. Reducing the
resolution and color depth of the server machine can save some
processor work. This screen is not meant for entertainment, so set the
screen to just go blank -- there's little processing being done on a
blank screen. Checking for viruses is important, but don't steal
valuable processor cycles on continual checking. If this machine is
configured not to do file sharing, it won't need continual checking.
Schedule regular scans during off-peak hours.
- Don't use energy saving software. This is a server you're dealing with. You really don't want
it to go to sleep, waiting for a request to come in to wake it. Don't
let the hard drive or the system sleep. At most, let the screen power
down.
- Restart the computer regularly. Despite claims that operating systems are getting more
reliable, a regular restart is still a good idea. Operating system
developers tend to release fixes to their software to fix memory leaks
and other similar problems. Restarting the server occasionally can be
beneficial. If you find there are any memory leaks occurring through
the use of the operating system's performance monitors, track those
leaks down and repair or report them to increase stability.
- Tweak FileMaker Server's cache settings. FileMaker Server has its own built-in cache to allow fast
communication to memory rather than making every transaction
communicate with the hard drive. This cache has a maximum size of 40MB.
There's a certain amount of overhead involved in checking the cache for
data prior to going to the hard drive. Therefore, you can gain some
performance by properly tuning the cache. Using a gauge provided by
FileMaker Server, you can determine the Cache Hit percentage. The Cache
Hits should maintain around a 95 percent hit rate in the production
environment. If it's regularly less than this, increase the cache size.
If much more, try reducing the cache size slightly. A good rule of
thumb is to set the server cache to 5 percent of the total size of
database files hosted. This is only a starting point from which you can
make adjustments.
Mac OS 8.6 to 9.x tuning
The Mac OS doesn't provide
preemptive multitasking, and it handles memory allocation in a unique
way. Therefore, it's important that FileMaker Server be the only thing
this computer is used for, even more so than with other operating
systems. Follow these guidelines:
- The FileMaker Server application should
always be the front-most application. This
means that the upper-right corner of the screen should say FileMaker
Server, not Finder. If the desktop was clicked, then the Finder will
take priority and slow the server tremendously. This goes for other
applications, as well, not just the Finder. In fact, any interaction
with something other than the server will slow it down. Legend has it
that a user's FileMaker Server "crashed." When the administrator
investigated the server, he found that a book had fallen from a shelf
landing on the mouse. The mouse-down event took control of the system,
not allowing any processor sharing for the server to handle requests.
- Set the server application to "Maximize
Performance." In FileMaker Server's
preferences (figure 1), an option exists under Administration that says
"Maximize performance." This option reduces the amount of CPU available
for other applications. As previously mentioned, this machine should be
dedicated to FileMaker Server, so this won't be detrimental to the
system -- in fact, it will help in the primary purpose of the system.
- Minimize the extensions being used. A good place to start is the basic extensions needed by the
operating system. This can be set up with Extensions Manager. Build the
"necessary" list from there. Turn off all energy saving settings as
well as any virus checking. These are unnecessary, yet very costly when
it comes to performance.
- Set the memory appropriately. Setting the amount of memory an application is given to use
is a concept unique to Mac. In the troubleshooting of a Mac-based
application, the amount of memory given to the application is often
increased, which makes the application work better. This isn't the case
with FileMaker Server after a point. FileMaker Server is a relatively
small application, streamlined for the purpose of sharing data. When
FileMaker Server is installed, it's given a minimum amount of memory
requirement of 4MB (4,096KB) and a preferred amount of 8MB (8,192KB).
The memory requirement consists of a combination of the memory needed
for the application and the requested cache size. Therefore, a change
in the cache size setting will result in a dialog requesting a change
in the application memory. Allow that change to be made (and verify
that it was made in the Get Info dialog). Increasing the memory beyond
the recommendation won't help performance. In fact, it may harm
performance due to the increased overhead of the memory given to the
application.
- Don't use virtual memory. Virtual memory uses the hard drive as if it were physical
memory for the computer; therefore, it's I/O-intensive. As stated
earlier, FileMaker Server uses the hard drive extensively. Adding
extensive use of virtual memory will severely slow the performance of
the FileMaker Server. However, several administrators have indicated
that performance increased dramatically under certain conditions when
virtual memory was turned on and set to only 1MB over the physical
memory size. Keeping the setting at only 1MB over physical memory size
ensures that the virtual memory is not actually being used.
Mac OS X tuning
Mac OS X is a totally
different Mac operating system from the core up. It's based on BSD UNIX
and was developed as a network operating system. It has preemptive
multitasking, protected memory, and true virtual memory. FileMaker
Server for OS X has been re-written as a UNIX service with a Cocoa
interface. With these changes, the server runs as a daemon under OS X,
meaning a lot of the tuning issues traditionally found with the Mac OS
no longer apply. However, similar to Mac Classic, you still have to
start an application to initialize FileMaker Server from a graphical
interface. You can launch the FileMaker Server Config application (this
is where you set all of the Server settings) and click on the Start
Server button. After you do this, the daemon is running and you can
quit the FileMaker Server Config application; the user can log out,
leaving the Server safely running in the background. Through the use of
the underlying UNIX core, you can start the Server daemon
automatically. FileMaker is in the process of publishing a document
describing the process of setting this up.
Windows tuning
The Windows NT/2000
operating system is often the preferred OS for corporate system
administrators. Therefore, there often tends to be more familiarity
with this OS. Unfortunately, with this familiarity comes a set of
preconceived notions about how FileMaker Server should be tuned. Some
of those notions are well founded, while others can be detrimental.
Keep these best practices
in mind when running FileMaker Server on Windows:
- Optimize for Background services. In the System Properties, under the Advanced tab, under
"Performance Options...", choose Optimize performance for: "Background
services." This makes the operating system give priority to the
services, including FileMaker Server.
- Optimize for network throughput. For the properties for each LAN connection, ensure that under
the properties for "File and Printer Sharing for Microsoft Networks,"
Server Optimization is set to "Maximize data throughput for network
applications."
- Set the paging size and location
appropriately. In the System Properties,
under the Advanced tab, under "Performance Options...", under Virtual
memory, make sure the paging is set to a reasonable size (just over the
size of RAM is ideal) and not too large. Also make sure the entire
paging file is on one drive and that the drive is a fast drive,
preferably on a different drive/controller than the FileMaker data.
Red Hat Linux tuning
The Red Hat Linux version
of FileMaker Server is quite new, so the company has little real-world
information on tuning FileMaker Server. However, I do know that some
things are desirable. As with the other operating systems, keep
extraneous work to a minimum. View what processes are using the
processor most with a tool like "top." Core elements of the system will
usually rank high on the list with FileMaker Server in high demand.
Proper partitioning is
equally important here, and perhaps easier to manage than in other
operating systems. When configuring the computer, set up the
/var/fmserver mount point as its own partition, preferably of a RAID 5
configuration.
Backups
One of FileMaker Server's
(FMS) top features is the ability to back up live data. Starting with
version 5, FileMaker made it easier to perform automated backups than
ever before. Using a graphical interface on all but the Linux offering,
you can schedule a backup to happen at specific times. When one of
these backups runs, the basic process flows like this:
1. FMS "pauses," meaning the cache is flushed, writing
all data to the disk.
2. FMS releases the files so it's no longer in control
of them.
3. FMS copies the files to the specific backup
location.
4. After the copy is complete, FMS resumes, meaning it
reattaches to the files and starts replying to the clients again.
During this process, FMP
clients need not disconnect from the server. If anyone makes a request
requiring the server's attention, they simply wait until the server
resumes.
FileMaker recommends that
this process backs up the database files to a local drive, thus
allowing the server to return to its primary task -- sharing databases
-- as soon as it possibly can. This is just one more reason to have a
fast hard drive subsystem. From this backup directory, you can
configure a true backup to removable media, either with an enterprise
backup software or by another method left to your selection.
In the event of any server
failure, you should use one of the backed up files. Any failure could
result in corrupted files. Even if the files appear to be fine, some
corruption could be buried in the file.
A common backup procedure
is to make local backups at an interval relating to the amount of data
that could be lost. For example, at 6:00 a.m., 9:00 a.m., noon, 3:00
p.m., 6:00 p.m., and 11:30 p.m. weekdays, backups are done locally.
Then, at midnight, an incremental backup of the entire system is done
to the enterprise backup system. Finally, Friday night at midnight, a
full system backup is done. The backup tapes are duplicated and a copy
stored at a remote location. This way, if the server goes down for some
reason other than catastrophic drive failure of multiple drives
(assuming a RAID 5 configuration), you can use the more recent backup
of the data files, making a maximum of 3 hours of lost data. If there's
a catastrophic drive failure, then you can use the previous evening's
tape, losing a maximum of one day's data. Of course, you should tailor
these procedures to your situation and data value. Often, a properly
configured server will only require a local recovery to restore data
after a user has accidentally deleted data.
Flawless access
Because the data people
have put into FileMaker Pro often runs the organization, from the
grass-roots level to the enterprise, it's important to provide flawless
access to data in any enterprise. The only way to provide this type of
access is to treat FileMaker Server with respect. I've discussed
several key elements to consider when configuring the server. For
further information on specific topics, reference the TechInfo database
at http://www.filemaker.com.
In a test of three servers
running under these types of guidelines, all have run flawlessly,
giving 24/7 support. Exceptions of a network switch getting hit by
lightning and a maintenance person unplugging the server are hardly the
fault of the FileMaker Server. However, restoring data from backup
after these incidents was simple, quick, and nearly transparent to
users. Implementing similar configurations will result in similar
results.
About the
Author:
Tony
Miller, FileMaker senior systems engineer for northeastern U.S., has
been with FileMaker since 2000, consulting with customers, writing
technical briefs, and presenting the benefits of FileMaker. Prior to
this he was a FileMaker developer in the midwest with FSA Partner
C&H Consulting.
Copyright
©2003 ADVISOR MEDIA, Inc. All Rights Reserved.
ADVISOR® is a registered trademark of ADVISOR MEDIA, Inc. in the
United States and other countries.
Trademarks & Terms of Use.